A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyrights whatsoever.
Reference is made to the Microfiche Appendix which forms a part of this document and is incorporated herein by reference. The Microfiche Appendix comprises 188 frames located on 2 microfiche.
1. Field of the Invention
The present invention relates generally to a method and system for auditing and analyzing the execution of computer programs in real-time, and particularly to a method and system for generating source program auditing statements for debugging an application program.
2. Description of the Related Art
Typically, computer source programs are written in a source programming language by computer programmers. Alternatively, source programs can be generated by a Fourth Generation Language (4GL) or a computer-aided software engineering (CASE) tool. Programs created using a Fourth Generation Language or a CASE tool are automatically translated into source statements of a conventional programming language as an intermediate step to compilation and execution. Conventional programming languages include Common Business-Oriented Language (COBOL), formula translation (FORTRAN), Pascal, and Report Program Generator (RPG), amongst others. These conventional programming languages are source programs that are compiled into executable modules or objects so that they may be executed. Alternative programming languages, such as Java or Basic, allow source programs to be directly executed by an interpreter, bypassing the compilation step.
The programmer using a conventional or alternative programming language, or the application designer using a 4GL or a CASE tool, uses available programming tools such as objects, functions, diagrams, routines, and/or operation codes to translate a perceived or defined need into a programmed solution. The output program must be tested to determine if the program works as designed. The program is executed against data to verify the efficacy and accuracy of the program as executed. Herein both the programmer and the application designer are generally referred to as the programmer.
In the art of computer programming, the quickest and easiest part of programming is writing or generating the source program, while the most difficult and time-consuming part is making the program work correctly. The computer program needs to work correctly both initially and years later. Errors in programming result from a variety of sources. Sometimes the programming specifications are not complete or correct, resulting in errors and rewrites. Also, the programmer""s understanding or logic may not be correct. Frequently, the data processed by the program is not as anticipated. In addition, unanticipated error conditions increase the probability of program error or failure. Such conditions include human error resulting from operation and training inadequacies, hardware failures, and network problems resulting from the complex interaction of events at any moment of time in a company with hundreds or thousands of computer users.
When a program does not work properly or fails completely, it is essential to provide tools for quick, comprehensive analysis of the program""s execution. In addition, tools that speed identification and resolution of any problems are needed. Tools that allow the source program to be quickly and easily understood and corrected are also desirable. These tools are helpful during initial testing by the programmer to increase programmer productivity, and to increase the quality and reliability of the program. These tools are crucially needed when the program fails or must be changed by a programmer who is totally unfamiliar with the source program while it is in production, often at a time of great stress, of economic loss to the company, and in a high-risk environment. The real-time program audit software of the present invention addresses these needs for virtually any source programming language, and is also applicable in 4GL and CASE programming environments.
Programs purporting to audit the execution of themselves or other programs are found in the prior art. These prior art programs lack the real-time nature of the current invention or are not as comprehensive in their auditing capabilities. The related art is represented by the following patents of interest.
U.S. Pat. No. 5,559,884, issued on Sep. 24, 1996 to Robert L. Davidson et al., discloses a method and system for generating and auditing a signature for executable modules. Davidson et al. do not suggest real-time program audit software according to the claimed invention.
U.S. Pat. No. 5,574,898, issued on Nov. 12, 1996 to David B. Leblang et al., discloses a data processing system and method which feature an object selector including an auditor for recording, as an audit record, which versions of objects are accessed by a processor during a data processing process. Each derived object is associated with an audit record. A system build process starts the auditor prior to executing commands which produce derived objects, and stops the auditor when those commands are completed. The process records any arbitrary sequence of commands. The invention of Leblang et al. is a CASE system and cannot be utilized with other programming languages or source programs, regardless of how they are generated. Also, the invention of Leblang et al. audits which version of a file is being utilized; it is a CASE version control system. The program also generates a configuration record which provides a complete record of software builds which includes a listing of all source file versions used, versions of build tools, and all build options specified. Configuration records can then be compared by showing the differences between two builds of the same program. Other commands label the builds with version labels on object versions listed in the record. The invention of Leblang et al. is designed to monitor the version of a software program, and the objects used within that software program, during the design of the program. It is a tool to be used by computer programmers who are utilizing CASE tools to write a software program and, therefore, is not as useful as the present invention in that it is limited to CASE tool program design. Also, the invention of Leblang et al. is not useful for monitoring the execution of a program in a remote time after the creation of the program. The invention of Leblang et al. is distinctly different from the present invention in that it was not designed to monitor the execution of a program utilizing any type of programming language; the current invention is designed to monitor any type of machine code as it executes. Leblang et al. do not suggest real-time program audit software according to the claimed invention.
U.S. Pat. No. 5,754,763, issued on May 19, 1998 to Thomas W. Bereiter, shows a software auditing program which is designed to monitor the number of users who simultaneously invoke one or more application programs which occur in response to system management tasks. The auditing program therein counts the number of simultaneous invocations in order to determine whether an authorized number of copies of each program within the managed region has been exceeded. The protocol requires a dedicated license server. The sole purpose of the invention of Bereiter is to use a license server to identify violations of the licenses of an organization. The program therein does not audit any other activity nor does it aid in the actual execution of a program. It does not aid in the monitoring of program errors and trouble shooting during the execution of a program or system, as does the current invention. Bereiter does not suggest real-time program audit software according to the claimed invention.
U.S. Pat. No. 5,794,252, issued on Aug. 11, 1998 to Bruce W. Bailey et al., discloses a database management system which utilizes a remote duplicate database facility to monitor changes made to a database on a local system and to maintain a copy of that database on a remote system. The invention of Bailey et al. verifies data files making sure that the data or other file, relied upon by the user, is the most up-to-date file available. The system verifies that the files are protected from interruptions, errors, or failures in the computer operations. Bailey et al. protect database files and other files from being lost by creating a remote backup of those files as they are made and stored. Bailey et al. also make a record of the backups in order to verify that the most recent files are in use and are concurrent with the backup records. The invention of Bailey et al. is distinctly different from the current invention. Bailey et al. protect or audit data files, while the current invention audits program executions. These are very distinct activities. Bailey et al. do not suggest real-time program audit software according to the claimed invention.
U.S. Pat. No. 5,813,009, issued on Sep. 22, 1998 to Johnson et al., describes a computer based records management system which filters information to assure that record data units offered to the system for storage are complete and not redundant. These record data may originate from a variety of sources, such as electronic data, data scanned from paper, data digitally formed from audio, video, or otherwise formed as digital data information media. The goal of Johnson et al. is to provide a record keeping medium which eliminates the need for paper or microform record keeping. The system therein audits itself to assure that only the most up-to-date and accurate records are maintained. Johnson et al. provide for record data unit tracking and audit trails in the event of any requirement for regulatory or legal compliance with discovery or other record unit requests. Johnson et al. also permit reconstruction of the record units of an enterprise in the event of a catastrophic event. Johnson et al. audit storage files but not program execution and is, therefore, distinctly different from the present invention. Johnson et al. do not suggest real-time program audit software according to the claimed invention.
International Patent document WO 93/01550, published on Jan. 21, 1993, discloses a method and system for recording the use of a licensed product, and for controlling its use. International ""550 does not suggest real-time program audit software according to the claimed invention.
None of the above inventions and patents, taken either singularly or in combination, is seen to describe the instant invention as claimed. Thus, a real-time program audit solving the aforementioned problems is desired.
The current invention, a real-time program audit software program, is a software program, a method, and a system for generating source program audit statements which examine and verify program statements and data as the program executes. The audits generated by the real-time program audit provide real-time analysis of the execution of the program. The real-time program audit software may be used with any programming language that uses source program statements, whether the source statements are compiled into an executable object or are interpreted during program execution. Conventional source programs are selected for auditing based on an audit profile. The audit profile is customized for specific compile and initial execution options. The source program is expanded with the selected audit statements. The source program is compiled with a conventional language compiler. Program execution audits are based on the initial execution audit profile, customized execution audits, or dynamic audits specified during program execution. Program audit output is to a disk or print file, and is available for immediate online display or printing, or for expanded auditing analysis. Expanded auditing analysis provides for extensive analysis of the real-time program audit output data from all audited programs based on the desired analysis, which includes program, user, date and time ranges, audit code prefixes, audited file, field, label, and any execution audited data value.
The real-time program audit software is a new approach to auditing the execution processing of programs of virtually any source programming language. The real-time program audit is basically a pre-compiler program that is specific for the type of programming language utilized. In other words, a different version of the real-time program audit software is required for each programming language compiler or interpreter utilized.
Accordingly, it is a principal object of the invention to audit the execution of every program statement selected for auditing in real-time. The audit includes all field names used in the audited source statements and their data values at program execution. Date and time are included in the audit. Real-time online review and analysis of the auditing is an integral part of the real-time audit program software. Real-time printing of the auditing for off-line review and analysis is also provided.
It is another object of the invention to expand the input conventional source program with the audit statements, using an easily understood method of source program expansion that does not materially alter or change the processing, flow or conventional output of the program as it executes. The invention, alternatively, permits the existing conventional source program to optionally remain unchanged by creating a separate expanded source program in another library.
It is a further object of the invention to utilize the expanded source program and the audit statements as the basis for analysis of the program execution audit output. The invention provides for more rapid understanding and correction of errors, problems, or programming logic than is possible with the conventional source program. The source program is expanded with standard comprehensive program documentation. Examples of the documentation provided are file names, file keys, and call program names. This expansion results in source program""s being significantly faster to write and test by the original programmer. Also, the program is much easier to read and understand by programmers unfamiliar with it, and therefore programmers can more easily modify the program.
Still another object of the invention is to provide default audit compile profiles which provide for typical auditing environments such as first program test audits, completed program test audits, pilot production audits, and production environment audits. The default audit profiles simplify the process of selecting auditing options to be included in the expanded source program. The invention allows a selected audit profile to be modified for the selected program and used when the conventional source program is expanded with audit statements.
Another object of the invention is to allow virtually any executable source program statement to be audited. The invention also allows virtually any file in the source program to be audited, together with desired file operation codes, and the data for all key fields used in the audited file operations. The invention provides ten levels of auditing which may be dynamically changed during program execution. Any executable operation code may be audited together with all fields referenced in each audited statement. Also, the invention provides standard audit operation code audit prefix codes beginning with the characters Z$, and with a suffix code unique to the operation code.
A further object of the invention is to allow virtually any field or label used in the source program to be audited when either referenced or modified, together with the data value of each audited field. Also, the invention provides select and omit functions which qualify the auditing of operation codes by field name(s).
Another object is to provide program default initial execution profiles, which are provided for typical initial execution environments, such as first program test, completed program test, pilot production, and production environment. The default initial execution profiles simplify the process of auditing the execution of programs by providing frequently selected audit execution options. The invention allows a selected execution profile to be modified for the selected program and used during the execution of the program.
It is a further object of the invention to provide for dynamic modification of program auditing during program execution by changing execution auditing options, or turning auditing on or off completely. Audits must have been previously selected for potential audit and included in the expanded source program.
An additional object is to optionally output audit data to a disk, and to provide for the retention of the audit data for both test and production environments. The invention also provides an audit database in date and time sequences from all audited programs. This provides for analysis of audited statements across all audited programs by date and time sequence. The analysis may include program, user, date and time range, audit code prefix, file, field, label, and/or any execution audited data value. The invention provides formatted audit reporting of historical audit information for use by internal and external auditors at a level of detail and auditability not possible previously.
Another object of this invention is to reduce the cost of developing and maintaining source programs by significantly reducing the skills and training needed by programmers, and to reduce much of the risk involved in implementing and maintaining programs. The invention also reduces the number of programmers required to develop and maintain programs.
Additionally, it is an object of the invention to provide the real-time detailed audit information needed for advanced event detection and event action software functions. This object may be advantageous in a large variety of computer operation settings and is particularly useful with multiple programmers and users that are utilizing the same programming language on the same compiler on a remote computer.
It is an object of the invention to provide improved elements and arrangements thereof in real-time program audit software for the purposes described which is inexpensive, dependable and fully effective in accomplishing its intended purposes.
These and other objects of the present invention will become readily apparent upon further review of the following specification and drawings.